#pragma once

#include <stdarg.h>

unsigned int win_utf8_codepage();
unsigned int win_cvt_default_pagecode();
unsigned int win_cvt_a2w_size(unsigned int codePage, const char *src);
void win_cvt_a2w(unsigned int codePage, const char *src, wchar_t *dst, unsigned int destsize);
unsigned int win_cvt_w2a_size(unsigned int codePage, const wchar_t *src);
void win_cvt_w2a(unsigned int codePage, const wchar_t *src, char *dst, unsigned int destsize);


/// \brief
/// \param char * dest
/// \param size_t dest_size
/// \param const char * fmt
/// \param va_list arg_list
/// \return int : 0 success; 1 insufficient buffer; -1 fail
///
int win_v_printf_a(char * dest, size_t dest_size, const char *fmt, va_list arg_list);
int win_v_printf_w(wchar_t * dest, size_t dest_size, const wchar_t *fmt, va_list arg_list);
